package com.wali.modules.bil.dao;

import com.wali.modules.bil.vo.BilExpressVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author walixu
 * @ClassName com.wali.modules.common.dao
 * @Description 运单信息dao接口
 * @email wali.xu@kpmg.com
 * @date 19/01/2019 2:14 下午
 */
@Mapper
public interface IBilExpressDao {

    /**
     * @param bilExpress
     * @return
     * @throws
     * @Title saveUsrSender
     * @Description 新增运单信息
     */
    int saveBilExpress(@Param("bilExpress") BilExpressVO bilExpress);

    /**
     * @param bilExpress
     * @return
     * @throws
     * @Title getBilExpress
     * @Description 查询符合条件的单条运单信息
     */
    BilExpressVO getBilExpress(@Param("bilExpress") BilExpressVO bilExpress);

    /**
     * @param bilExpress
     * @return
     * @throws
     * @Title updateBilExpress
     * @Description 更新运单信息
     */
    int updateBilExpress(@Param("bilExpress") BilExpressVO bilExpress);

    /**
     * @param
     * @return
     * @throws
     * @Title batchUpdateBilExpress
     * @Description 批量更新运单信息
     */
    int batchUpdateBilExpress(@Param("bilExpressList") List<BilExpressVO> bilExpressList);

    /**
     * @param
     * @return
     * @throws
     * @Title batchUpdateBilExpressState
     * @Description 批量更新运单的状态
     */
    int batchUpdateBilExpressState(@Param("waybillNos") List<String> waybillNos, @Param("state") int state);

    /**
     * @param bilExpress
     * @return
     * @throws
     * @Title deleteBilExpress
     * @Description 删除运单信息
     */
    int deleteBilExpress(@Param("bilExpress") BilExpressVO bilExpress);

    /**
     * @param bilExpress
     * @param page
     * @param limit
     * @return 收件人列表
     * @throws
     * @Title listBilExpress
     * @Description 查询所有符合条件的运单信息
     */
    List<BilExpressVO> listBilExpress(@Param("bilExpress") BilExpressVO bilExpress, @Param("states") List<Integer> states, @Param("page") int page, @Param("limit") int limit);

    /**
     * @param bilExpress
     * @return 运单列表
     * @throws
     * @Title listBilExpressTo
     * @Description 查询所有符合条件的运单信息
     */
    List<BilExpressVO> listBilExpressTo(@Param("bilExpress") BilExpressVO bilExpress);

    /**
     * @param bilExpress
     * @return
     * @throws
     * @Title countBilExpress
     * @Description 统计符合条件的收件人数量
     */
    int countBilExpress(@Param("bilExpress") BilExpressVO bilExpress, @Param("states") List<Integer> states);

    /**
     * @param ids
     * @return
     * @throws
     * @Title listBilExpressByIds
     * @Description 查询符合条件的运单信息
     */
    List<BilExpressVO> listBilExpressByIds(@Param("ids") List<Integer> ids, @Param("storeCode") String storeCode);
}
